<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>splice和concat

    </title>
</head>

<body>
    <script>
        function mySplice(index, howmany, ...items) {

            // 先做类型判断，确保输入的都为数字
            if (typeof index !== 'number' || typeof howmany !== 'number') {
                console.log('请检查输入的类型');
                return;
            }
            //剩余参数的数组长度
            let len = items.length;
            // 执行删除操作，将范围内的元素删除，也就是将后面的向前移动
            if (howmany !== 0) {
                // 用于保存返回值的数组
                let result = [];
                // 将删除的元素保存到数组中，后续作为返回值
                for (let i = index; i < index + howmany; i++) {
                    result[result.length] = this[i];
                }
                // 从删除的最后一个位置的下一位开始到原数组末尾，依次向前移动howmany个位置
                for (let m = index + howmany; m < this.length; m++) {
                    this[index++] = this[m];
                }
                //将数组的长度删除删除howmany个长度，
                this.length = this.length - howmany;
                return result
            }

            // 添加元素
            if (howmany === 0 && len > 0) {
                // 说明此时是在指定位置添加元素
                // 将数组索引为index的位置向后移动howmany的值，并将items添加进去
                //需要注意的是应该从数组的最后开始移动，否则可能会出现赋值错误的情况

                //还是分为两步，第一步将数组拆分，需要移动的向后移动
                for (let j = this.length - 1; j >= index; j--) {
                    this[j + len] = this[j];

                }
                for (let k = 0; k < len; k++) {

                    this[index++] = items[k];
                }
                // 数组长度自己会增加
                //返回值为空
                return []
            }

        }
        Array.prototype.mySplice = mySplice;
        let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        // let result = arr.mySplice(1, 3)
        let result2 = arr.mySplice(2, 0, 44, 44)
        console.log(result2);
        console.log(arr);




    </script>
</body>

</html>